package com.stone.serverless.beetl.builder;

import com.stone.serverless.beetl.parase.SeMapperMethodParser;
import org.beetl.sql.mapper.MapperInvoke;
import org.beetl.sql.mapper.builder.BaseMapperConfigBuilder;

import java.lang.reflect.Method;

/**
 * @Description: TODO
 * @Author: MECHREVO
 * @Date: 2022/4/6 10:24
 * @Version: 1.0.0
 */
public class SeMapperConfigBuilder extends BaseMapperConfigBuilder {
    @Override
    public MapperInvoke getAmi(Class entity, Class mapperClass, Method method) {
        //先自己找
        MapperInvoke mapperInvoke = amiMethodMap.get(method);
        if (mapperInvoke != null) {
            return mapperInvoke;
        }
        SeMapperMethodParser mapperMethodParser = new SeMapperMethodParser(entity, mapperClass, method);
        mapperInvoke = mapperMethodParser.parse();
        mapperInvoke = wrap(mapperInvoke, method);
        amiMethodMap.putIfAbsent(method, mapperInvoke);
        return mapperInvoke;
    }
}
